1 /+
2  + Copyright (c) 2014-2018 The Khronos Group Inc.
3  + 
4  + Permission is hereby granted, free of charge, to any person obtaining a copy
5  + of this software and/or associated documentation files (the "Materials"),
6  + to deal in the Materials without restriction, including without limitation
7  + the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  + and/or sell copies of the Materials, and to permit persons to whom the
9  + Materials are furnished to do so, subject to the following conditions:
10  + 
11  + The above copyright notice and this permission notice shall be included in
12  + all copies or substantial portions of the Materials.
13  + 
14  + MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15  + STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16  + HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
17  + 
18  + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19  + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23  + FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24  + IN THE MATERIALS.
25  +/
26 
27 /+
28  + This header is automatically generated by the same tool that creates
29  + the Binary Section of the SPIR-V specification.
30  +/
31 
32 /+
33  + Enumeration tokens for SPIR-V, in various styles:
34  +   C, C++, C++11, JSON, Lua, Python, C#, D
35  + 
36  + - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37  + - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38  + - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39  + - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40  + - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41  + - C# will use enum classes in the Specification class located in the "Spv" namespace,
42  +     e.g.: Spv.Specification.SourceLanguage.GLSL
43  + - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
44  + 
45  + Some tokens act like mask values, which can be OR'd together,
46  + while others are mutually exclusive.  The mask-like ones have
47  + "Mask" in their name, and a parallel enum that has the shift
48  + amount (1 << x) for each corresponding enumerant.
49  +/
50 
51 module spv;
52 
53 enum uint MagicNumber = 0x07230203;
54 enum uint Version = 0x00010300;
55 enum uint Revision = 6;
56 enum uint OpCodeMask = 0xffff;
57 enum uint WordCountShift = 16;
58 
59 enum SourceLanguage : uint
60 {
61     Unknown = 0,
62     ESSL = 1,
63     GLSL = 2,
64     OpenCL_C = 3,
65     OpenCL_CPP = 4,
66     HLSL = 5,
67 }
68 
69 enum ExecutionModel : uint
70 {
71     Vertex = 0,
72     TessellationControl = 1,
73     TessellationEvaluation = 2,
74     Geometry = 3,
75     Fragment = 4,
76     GLCompute = 5,
77     Kernel = 6,
78     TaskNV = 5267,
79     MeshNV = 5268,
80     RayGenerationNV = 5313,
81     IntersectionNV = 5314,
82     AnyHitNV = 5315,
83     ClosestHitNV = 5316,
84     MissNV = 5317,
85     CallableNV = 5318,
86 }
87 
88 enum AddressingModel : uint
89 {
90     Logical = 0,
91     Physical32 = 1,
92     Physical64 = 2,
93 }
94 
95 enum MemoryModel : uint
96 {
97     Simple = 0,
98     GLSL450 = 1,
99     OpenCL = 2,
100     VulkanKHR = 3,
101 }
102 
103 enum ExecutionMode : uint
104 {
105     Invocations = 0,
106     SpacingEqual = 1,
107     SpacingFractionalEven = 2,
108     SpacingFractionalOdd = 3,
109     VertexOrderCw = 4,
110     VertexOrderCcw = 5,
111     PixelCenterInteger = 6,
112     OriginUpperLeft = 7,
113     OriginLowerLeft = 8,
114     EarlyFragmentTests = 9,
115     PointMode = 10,
116     Xfb = 11,
117     DepthReplacing = 12,
118     DepthGreater = 14,
119     DepthLess = 15,
120     DepthUnchanged = 16,
121     LocalSize = 17,
122     LocalSizeHint = 18,
123     InputPoints = 19,
124     InputLines = 20,
125     InputLinesAdjacency = 21,
126     Triangles = 22,
127     InputTrianglesAdjacency = 23,
128     Quads = 24,
129     Isolines = 25,
130     OutputVertices = 26,
131     OutputPoints = 27,
132     OutputLineStrip = 28,
133     OutputTriangleStrip = 29,
134     VecTypeHint = 30,
135     ContractionOff = 31,
136     Initializer = 33,
137     Finalizer = 34,
138     SubgroupSize = 35,
139     SubgroupsPerWorkgroup = 36,
140     SubgroupsPerWorkgroupId = 37,
141     LocalSizeId = 38,
142     LocalSizeHintId = 39,
143     PostDepthCoverage = 4446,
144     DenormPreserve = 4459,
145     DenormFlushToZero = 4460,
146     SignedZeroInfNanPreserve = 4461,
147     RoundingModeRTE = 4462,
148     RoundingModeRTZ = 4463,
149     StencilRefReplacingEXT = 5027,
150     OutputLinesNV = 5269,
151     OutputPrimitivesNV = 5270,
152     DerivativeGroupQuadsNV = 5289,
153     DerivativeGroupLinearNV = 5290,
154     OutputTrianglesNV = 5298,
155 }
156 
157 enum StorageClass : uint
158 {
159     UniformConstant = 0,
160     Input = 1,
161     Uniform = 2,
162     Output = 3,
163     Workgroup = 4,
164     CrossWorkgroup = 5,
165     Private = 6,
166     Function = 7,
167     Generic = 8,
168     PushConstant = 9,
169     AtomicCounter = 10,
170     Image = 11,
171     StorageBuffer = 12,
172     CallableDataNV = 5328,
173     IncomingCallableDataNV = 5329,
174     RayPayloadNV = 5338,
175     HitAttributeNV = 5339,
176     IncomingRayPayloadNV = 5342,
177     ShaderRecordBufferNV = 5343,
178 }
179 
180 enum Dim : uint
181 {
182     _1D = 0,
183     _2D = 1,
184     _3D = 2,
185     Cube = 3,
186     Rect = 4,
187     Buffer = 5,
188     SubpassData = 6,
189 }
190 
191 enum SamplerAddressingMode : uint
192 {
193     None = 0,
194     ClampToEdge = 1,
195     Clamp = 2,
196     Repeat = 3,
197     RepeatMirrored = 4,
198 }
199 
200 enum SamplerFilterMode : uint
201 {
202     Nearest = 0,
203     Linear = 1,
204 }
205 
206 enum ImageFormat : uint
207 {
208     Unknown = 0,
209     Rgba32f = 1,
210     Rgba16f = 2,
211     R32f = 3,
212     Rgba8 = 4,
213     Rgba8Snorm = 5,
214     Rg32f = 6,
215     Rg16f = 7,
216     R11fG11fB10f = 8,
217     R16f = 9,
218     Rgba16 = 10,
219     Rgb10A2 = 11,
220     Rg16 = 12,
221     Rg8 = 13,
222     R16 = 14,
223     R8 = 15,
224     Rgba16Snorm = 16,
225     Rg16Snorm = 17,
226     Rg8Snorm = 18,
227     R16Snorm = 19,
228     R8Snorm = 20,
229     Rgba32i = 21,
230     Rgba16i = 22,
231     Rgba8i = 23,
232     R32i = 24,
233     Rg32i = 25,
234     Rg16i = 26,
235     Rg8i = 27,
236     R16i = 28,
237     R8i = 29,
238     Rgba32ui = 30,
239     Rgba16ui = 31,
240     Rgba8ui = 32,
241     R32ui = 33,
242     Rgb10a2ui = 34,
243     Rg32ui = 35,
244     Rg16ui = 36,
245     Rg8ui = 37,
246     R16ui = 38,
247     R8ui = 39,
248 }
249 
250 enum ImageChannelOrder : uint
251 {
252     R = 0,
253     A = 1,
254     RG = 2,
255     RA = 3,
256     RGB = 4,
257     RGBA = 5,
258     BGRA = 6,
259     ARGB = 7,
260     Intensity = 8,
261     Luminance = 9,
262     Rx = 10,
263     RGx = 11,
264     RGBx = 12,
265     Depth = 13,
266     DepthStencil = 14,
267     sRGB = 15,
268     sRGBx = 16,
269     sRGBA = 17,
270     sBGRA = 18,
271     ABGR = 19,
272 }
273 
274 enum ImageChannelDataType : uint
275 {
276     SnormInt8 = 0,
277     SnormInt16 = 1,
278     UnormInt8 = 2,
279     UnormInt16 = 3,
280     UnormShort565 = 4,
281     UnormShort555 = 5,
282     UnormInt101010 = 6,
283     SignedInt8 = 7,
284     SignedInt16 = 8,
285     SignedInt32 = 9,
286     UnsignedInt8 = 10,
287     UnsignedInt16 = 11,
288     UnsignedInt32 = 12,
289     HalfFloat = 13,
290     Float = 14,
291     UnormInt24 = 15,
292     UnormInt101010_2 = 16,
293 }
294 
295 enum ImageOperandsShift : uint
296 {
297     Bias = 0,
298     Lod = 1,
299     Grad = 2,
300     ConstOffset = 3,
301     Offset = 4,
302     ConstOffsets = 5,
303     Sample = 6,
304     MinLod = 7,
305     MakeTexelAvailableKHR = 8,
306     MakeTexelVisibleKHR = 9,
307     NonPrivateTexelKHR = 10,
308     VolatileTexelKHR = 11,
309 }
310 
311 enum ImageOperandsMask : uint
312 {
313     MaskNone = 0,
314     Bias = 0x00000001,
315     Lod = 0x00000002,
316     Grad = 0x00000004,
317     ConstOffset = 0x00000008,
318     Offset = 0x00000010,
319     ConstOffsets = 0x00000020,
320     Sample = 0x00000040,
321     MinLod = 0x00000080,
322     MakeTexelAvailableKHR = 0x00000100,
323     MakeTexelVisibleKHR = 0x00000200,
324     NonPrivateTexelKHR = 0x00000400,
325     VolatileTexelKHR = 0x00000800,
326 }
327 
328 enum FPFastMathModeShift : uint
329 {
330     NotNaN = 0,
331     NotInf = 1,
332     NSZ = 2,
333     AllowRecip = 3,
334     Fast = 4,
335 }
336 
337 enum FPFastMathModeMask : uint
338 {
339     MaskNone = 0,
340     NotNaN = 0x00000001,
341     NotInf = 0x00000002,
342     NSZ = 0x00000004,
343     AllowRecip = 0x00000008,
344     Fast = 0x00000010,
345 }
346 
347 enum FPRoundingMode : uint
348 {
349     RTE = 0,
350     RTZ = 1,
351     RTP = 2,
352     RTN = 3,
353 }
354 
355 enum LinkageType : uint
356 {
357     Export = 0,
358     Import = 1,
359 }
360 
361 enum AccessQualifier : uint
362 {
363     ReadOnly = 0,
364     WriteOnly = 1,
365     ReadWrite = 2,
366 }
367 
368 enum FunctionParameterAttribute : uint
369 {
370     Zext = 0,
371     Sext = 1,
372     ByVal = 2,
373     Sret = 3,
374     NoAlias = 4,
375     NoCapture = 5,
376     NoWrite = 6,
377     NoReadWrite = 7,
378 }
379 
380 enum Decoration : uint
381 {
382     RelaxedPrecision = 0,
383     SpecId = 1,
384     Block = 2,
385     BufferBlock = 3,
386     RowMajor = 4,
387     ColMajor = 5,
388     ArrayStride = 6,
389     MatrixStride = 7,
390     GLSLShared = 8,
391     GLSLPacked = 9,
392     CPacked = 10,
393     BuiltIn = 11,
394     NoPerspective = 13,
395     Flat = 14,
396     Patch = 15,
397     Centroid = 16,
398     Sample = 17,
399     Invariant = 18,
400     Restrict = 19,
401     Aliased = 20,
402     Volatile = 21,
403     Constant = 22,
404     Coherent = 23,
405     NonWritable = 24,
406     NonReadable = 25,
407     Uniform = 26,
408     SaturatedConversion = 28,
409     Stream = 29,
410     Location = 30,
411     Component = 31,
412     Index = 32,
413     Binding = 33,
414     DescriptorSet = 34,
415     Offset = 35,
416     XfbBuffer = 36,
417     XfbStride = 37,
418     FuncParamAttr = 38,
419     FPRoundingMode = 39,
420     FPFastMathMode = 40,
421     LinkageAttributes = 41,
422     NoContraction = 42,
423     InputAttachmentIndex = 43,
424     Alignment = 44,
425     MaxByteOffset = 45,
426     AlignmentId = 46,
427     MaxByteOffsetId = 47,
428     NoSignedWrap = 4469,
429     NoUnsignedWrap = 4470,
430     ExplicitInterpAMD = 4999,
431     OverrideCoverageNV = 5248,
432     PassthroughNV = 5250,
433     ViewportRelativeNV = 5252,
434     SecondaryViewportRelativeNV = 5256,
435     PerPrimitiveNV = 5271,
436     PerViewNV = 5272,
437     PerTaskNV = 5273,
438     PerVertexNV = 5285,
439     NonUniformEXT = 5300,
440     HlslCounterBufferGOOGLE = 5634,
441     HlslSemanticGOOGLE = 5635,
442 }
443 
444 enum BuiltIn : uint
445 {
446     Position = 0,
447     PointSize = 1,
448     ClipDistance = 3,
449     CullDistance = 4,
450     VertexId = 5,
451     InstanceId = 6,
452     PrimitiveId = 7,
453     InvocationId = 8,
454     Layer = 9,
455     ViewportIndex = 10,
456     TessLevelOuter = 11,
457     TessLevelInner = 12,
458     TessCoord = 13,
459     PatchVertices = 14,
460     FragCoord = 15,
461     PointCoord = 16,
462     FrontFacing = 17,
463     SampleId = 18,
464     SamplePosition = 19,
465     SampleMask = 20,
466     FragDepth = 22,
467     HelperInvocation = 23,
468     NumWorkgroups = 24,
469     WorkgroupSize = 25,
470     WorkgroupId = 26,
471     LocalInvocationId = 27,
472     GlobalInvocationId = 28,
473     LocalInvocationIndex = 29,
474     WorkDim = 30,
475     GlobalSize = 31,
476     EnqueuedWorkgroupSize = 32,
477     GlobalOffset = 33,
478     GlobalLinearId = 34,
479     SubgroupSize = 36,
480     SubgroupMaxSize = 37,
481     NumSubgroups = 38,
482     NumEnqueuedSubgroups = 39,
483     SubgroupId = 40,
484     SubgroupLocalInvocationId = 41,
485     VertexIndex = 42,
486     InstanceIndex = 43,
487     SubgroupEqMask = 4416,
488     SubgroupEqMaskKHR = 4416,
489     SubgroupGeMask = 4417,
490     SubgroupGeMaskKHR = 4417,
491     SubgroupGtMask = 4418,
492     SubgroupGtMaskKHR = 4418,
493     SubgroupLeMask = 4419,
494     SubgroupLeMaskKHR = 4419,
495     SubgroupLtMask = 4420,
496     SubgroupLtMaskKHR = 4420,
497     BaseVertex = 4424,
498     BaseInstance = 4425,
499     DrawIndex = 4426,
500     DeviceIndex = 4438,
501     ViewIndex = 4440,
502     BaryCoordNoPerspAMD = 4992,
503     BaryCoordNoPerspCentroidAMD = 4993,
504     BaryCoordNoPerspSampleAMD = 4994,
505     BaryCoordSmoothAMD = 4995,
506     BaryCoordSmoothCentroidAMD = 4996,
507     BaryCoordSmoothSampleAMD = 4997,
508     BaryCoordPullModelAMD = 4998,
509     FragStencilRefEXT = 5014,
510     ViewportMaskNV = 5253,
511     SecondaryPositionNV = 5257,
512     SecondaryViewportMaskNV = 5258,
513     PositionPerViewNV = 5261,
514     ViewportMaskPerViewNV = 5262,
515     FullyCoveredEXT = 5264,
516     TaskCountNV = 5274,
517     PrimitiveCountNV = 5275,
518     PrimitiveIndicesNV = 5276,
519     ClipDistancePerViewNV = 5277,
520     CullDistancePerViewNV = 5278,
521     LayerPerViewNV = 5279,
522     MeshViewCountNV = 5280,
523     MeshViewIndicesNV = 5281,
524     BaryCoordNV = 5286,
525     BaryCoordNoPerspNV = 5287,
526     FragSizeEXT = 5292,
527     FragmentSizeNV = 5292,
528     FragInvocationCountEXT = 5293,
529     InvocationsPerPixelNV = 5293,
530     LaunchIdNV = 5319,
531     LaunchSizeNV = 5320,
532     WorldRayOriginNV = 5321,
533     WorldRayDirectionNV = 5322,
534     ObjectRayOriginNV = 5323,
535     ObjectRayDirectionNV = 5324,
536     RayTminNV = 5325,
537     RayTmaxNV = 5326,
538     InstanceCustomIndexNV = 5327,
539     ObjectToWorldNV = 5330,
540     WorldToObjectNV = 5331,
541     HitTNV = 5332,
542     HitKindNV = 5333,
543     IncomingRayFlagsNV = 5351,
544 }
545 
546 enum SelectionControlShift : uint
547 {
548     Flatten = 0,
549     DontFlatten = 1,
550 }
551 
552 enum SelectionControlMask : uint
553 {
554     MaskNone = 0,
555     Flatten = 0x00000001,
556     DontFlatten = 0x00000002,
557 }
558 
559 enum LoopControlShift : uint
560 {
561     Unroll = 0,
562     DontUnroll = 1,
563     DependencyInfinite = 2,
564     DependencyLength = 3,
565 }
566 
567 enum LoopControlMask : uint
568 {
569     MaskNone = 0,
570     Unroll = 0x00000001,
571     DontUnroll = 0x00000002,
572     DependencyInfinite = 0x00000004,
573     DependencyLength = 0x00000008,
574 }
575 
576 enum FunctionControlShift : uint
577 {
578     Inline = 0,
579     DontInline = 1,
580     Pure = 2,
581     Const = 3,
582 }
583 
584 enum FunctionControlMask : uint
585 {
586     MaskNone = 0,
587     Inline = 0x00000001,
588     DontInline = 0x00000002,
589     Pure = 0x00000004,
590     Const = 0x00000008,
591 }
592 
593 enum MemorySemanticsShift : uint
594 {
595     Acquire = 1,
596     Release = 2,
597     AcquireRelease = 3,
598     SequentiallyConsistent = 4,
599     UniformMemory = 6,
600     SubgroupMemory = 7,
601     WorkgroupMemory = 8,
602     CrossWorkgroupMemory = 9,
603     AtomicCounterMemory = 10,
604     ImageMemory = 11,
605     OutputMemoryKHR = 12,
606     MakeAvailableKHR = 13,
607     MakeVisibleKHR = 14,
608 }
609 
610 enum MemorySemanticsMask : uint
611 {
612     MaskNone = 0,
613     Acquire = 0x00000002,
614     Release = 0x00000004,
615     AcquireRelease = 0x00000008,
616     SequentiallyConsistent = 0x00000010,
617     UniformMemory = 0x00000040,
618     SubgroupMemory = 0x00000080,
619     WorkgroupMemory = 0x00000100,
620     CrossWorkgroupMemory = 0x00000200,
621     AtomicCounterMemory = 0x00000400,
622     ImageMemory = 0x00000800,
623     OutputMemoryKHR = 0x00001000,
624     MakeAvailableKHR = 0x00002000,
625     MakeVisibleKHR = 0x00004000,
626 }
627 
628 enum MemoryAccessShift : uint
629 {
630     Volatile = 0,
631     Aligned = 1,
632     Nontemporal = 2,
633     MakePointerAvailableKHR = 3,
634     MakePointerVisibleKHR = 4,
635     NonPrivatePointerKHR = 5,
636 }
637 
638 enum MemoryAccessMask : uint
639 {
640     MaskNone = 0,
641     Volatile = 0x00000001,
642     Aligned = 0x00000002,
643     Nontemporal = 0x00000004,
644     MakePointerAvailableKHR = 0x00000008,
645     MakePointerVisibleKHR = 0x00000010,
646     NonPrivatePointerKHR = 0x00000020,
647 }
648 
649 enum Scope : uint
650 {
651     CrossDevice = 0,
652     Device = 1,
653     Workgroup = 2,
654     Subgroup = 3,
655     Invocation = 4,
656     QueueFamilyKHR = 5,
657 }
658 
659 enum GroupOperation : uint
660 {
661     Reduce = 0,
662     InclusiveScan = 1,
663     ExclusiveScan = 2,
664     ClusteredReduce = 3,
665     PartitionedReduceNV = 6,
666     PartitionedInclusiveScanNV = 7,
667     PartitionedExclusiveScanNV = 8,
668 }
669 
670 enum KernelEnqueueFlags : uint
671 {
672     NoWait = 0,
673     WaitKernel = 1,
674     WaitWorkGroup = 2,
675 }
676 
677 enum KernelProfilingInfoShift : uint
678 {
679     CmdExecTime = 0,
680 }
681 
682 enum KernelProfilingInfoMask : uint
683 {
684     MaskNone = 0,
685     CmdExecTime = 0x00000001,
686 }
687 
688 enum Capability : uint
689 {
690     Matrix = 0,
691     Shader = 1,
692     Geometry = 2,
693     Tessellation = 3,
694     Addresses = 4,
695     Linkage = 5,
696     Kernel = 6,
697     Vector16 = 7,
698     Float16Buffer = 8,
699     Float16 = 9,
700     Float64 = 10,
701     Int64 = 11,
702     Int64Atomics = 12,
703     ImageBasic = 13,
704     ImageReadWrite = 14,
705     ImageMipmap = 15,
706     Pipes = 17,
707     Groups = 18,
708     DeviceEnqueue = 19,
709     LiteralSampler = 20,
710     AtomicStorage = 21,
711     Int16 = 22,
712     TessellationPointSize = 23,
713     GeometryPointSize = 24,
714     ImageGatherExtended = 25,
715     StorageImageMultisample = 27,
716     UniformBufferArrayDynamicIndexing = 28,
717     SampledImageArrayDynamicIndexing = 29,
718     StorageBufferArrayDynamicIndexing = 30,
719     StorageImageArrayDynamicIndexing = 31,
720     ClipDistance = 32,
721     CullDistance = 33,
722     ImageCubeArray = 34,
723     SampleRateShading = 35,
724     ImageRect = 36,
725     SampledRect = 37,
726     GenericPointer = 38,
727     Int8 = 39,
728     InputAttachment = 40,
729     SparseResidency = 41,
730     MinLod = 42,
731     Sampled1D = 43,
732     Image1D = 44,
733     SampledCubeArray = 45,
734     SampledBuffer = 46,
735     ImageBuffer = 47,
736     ImageMSArray = 48,
737     StorageImageExtendedFormats = 49,
738     ImageQuery = 50,
739     DerivativeControl = 51,
740     InterpolationFunction = 52,
741     TransformFeedback = 53,
742     GeometryStreams = 54,
743     StorageImageReadWithoutFormat = 55,
744     StorageImageWriteWithoutFormat = 56,
745     MultiViewport = 57,
746     SubgroupDispatch = 58,
747     NamedBarrier = 59,
748     PipeStorage = 60,
749     GroupNonUniform = 61,
750     GroupNonUniformVote = 62,
751     GroupNonUniformArithmetic = 63,
752     GroupNonUniformBallot = 64,
753     GroupNonUniformShuffle = 65,
754     GroupNonUniformShuffleRelative = 66,
755     GroupNonUniformClustered = 67,
756     GroupNonUniformQuad = 68,
757     SubgroupBallotKHR = 4423,
758     DrawParameters = 4427,
759     SubgroupVoteKHR = 4431,
760     StorageBuffer16BitAccess = 4433,
761     StorageUniformBufferBlock16 = 4433,
762     StorageUniform16 = 4434,
763     UniformAndStorageBuffer16BitAccess = 4434,
764     StoragePushConstant16 = 4435,
765     StorageInputOutput16 = 4436,
766     DeviceGroup = 4437,
767     MultiView = 4439,
768     VariablePointersStorageBuffer = 4441,
769     VariablePointers = 4442,
770     AtomicStorageOps = 4445,
771     SampleMaskPostDepthCoverage = 4447,
772     StorageBuffer8BitAccess = 4448,
773     UniformAndStorageBuffer8BitAccess = 4449,
774     StoragePushConstant8 = 4450,
775     DenormPreserve = 4464,
776     DenormFlushToZero = 4465,
777     SignedZeroInfNanPreserve = 4466,
778     RoundingModeRTE = 4467,
779     RoundingModeRTZ = 4468,
780     Float16ImageAMD = 5008,
781     ImageGatherBiasLodAMD = 5009,
782     FragmentMaskAMD = 5010,
783     StencilExportEXT = 5013,
784     ImageReadWriteLodAMD = 5015,
785     SampleMaskOverrideCoverageNV = 5249,
786     GeometryShaderPassthroughNV = 5251,
787     ShaderViewportIndexLayerEXT = 5254,
788     ShaderViewportIndexLayerNV = 5254,
789     ShaderViewportMaskNV = 5255,
790     ShaderStereoViewNV = 5259,
791     PerViewAttributesNV = 5260,
792     FragmentFullyCoveredEXT = 5265,
793     MeshShadingNV = 5266,
794     ImageFootprintNV = 5282,
795     FragmentBarycentricNV = 5284,
796     ComputeDerivativeGroupQuadsNV = 5288,
797     FragmentDensityEXT = 5291,
798     ShadingRateNV = 5291,
799     GroupNonUniformPartitionedNV = 5297,
800     ShaderNonUniformEXT = 5301,
801     RuntimeDescriptorArrayEXT = 5302,
802     InputAttachmentArrayDynamicIndexingEXT = 5303,
803     UniformTexelBufferArrayDynamicIndexingEXT = 5304,
804     StorageTexelBufferArrayDynamicIndexingEXT = 5305,
805     UniformBufferArrayNonUniformIndexingEXT = 5306,
806     SampledImageArrayNonUniformIndexingEXT = 5307,
807     StorageBufferArrayNonUniformIndexingEXT = 5308,
808     StorageImageArrayNonUniformIndexingEXT = 5309,
809     InputAttachmentArrayNonUniformIndexingEXT = 5310,
810     UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
811     StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
812     RayTracingNV = 5340,
813     VulkanMemoryModelKHR = 5345,
814     VulkanMemoryModelDeviceScopeKHR = 5346,
815     ComputeDerivativeGroupLinearNV = 5350,
816     SubgroupShuffleINTEL = 5568,
817     SubgroupBufferBlockIOINTEL = 5569,
818     SubgroupImageBlockIOINTEL = 5570,
819 }
820 
821 enum Op : uint
822 {
823     OpNop = 0,
824     OpUndef = 1,
825     OpSourceContinued = 2,
826     OpSource = 3,
827     OpSourceExtension = 4,
828     OpName = 5,
829     OpMemberName = 6,
830     OpString = 7,
831     OpLine = 8,
832     OpExtension = 10,
833     OpExtInstImport = 11,
834     OpExtInst = 12,
835     OpMemoryModel = 14,
836     OpEntryPoint = 15,
837     OpExecutionMode = 16,
838     OpCapability = 17,
839     OpTypeVoid = 19,
840     OpTypeBool = 20,
841     OpTypeInt = 21,
842     OpTypeFloat = 22,
843     OpTypeVector = 23,
844     OpTypeMatrix = 24,
845     OpTypeImage = 25,
846     OpTypeSampler = 26,
847     OpTypeSampledImage = 27,
848     OpTypeArray = 28,
849     OpTypeRuntimeArray = 29,
850     OpTypeStruct = 30,
851     OpTypeOpaque = 31,
852     OpTypePointer = 32,
853     OpTypeFunction = 33,
854     OpTypeEvent = 34,
855     OpTypeDeviceEvent = 35,
856     OpTypeReserveId = 36,
857     OpTypeQueue = 37,
858     OpTypePipe = 38,
859     OpTypeForwardPointer = 39,
860     OpConstantTrue = 41,
861     OpConstantFalse = 42,
862     OpConstant = 43,
863     OpConstantComposite = 44,
864     OpConstantSampler = 45,
865     OpConstantNull = 46,
866     OpSpecConstantTrue = 48,
867     OpSpecConstantFalse = 49,
868     OpSpecConstant = 50,
869     OpSpecConstantComposite = 51,
870     OpSpecConstantOp = 52,
871     OpFunction = 54,
872     OpFunctionParameter = 55,
873     OpFunctionEnd = 56,
874     OpFunctionCall = 57,
875     OpVariable = 59,
876     OpImageTexelPointer = 60,
877     OpLoad = 61,
878     OpStore = 62,
879     OpCopyMemory = 63,
880     OpCopyMemorySized = 64,
881     OpAccessChain = 65,
882     OpInBoundsAccessChain = 66,
883     OpPtrAccessChain = 67,
884     OpArrayLength = 68,
885     OpGenericPtrMemSemantics = 69,
886     OpInBoundsPtrAccessChain = 70,
887     OpDecorate = 71,
888     OpMemberDecorate = 72,
889     OpDecorationGroup = 73,
890     OpGroupDecorate = 74,
891     OpGroupMemberDecorate = 75,
892     OpVectorExtractDynamic = 77,
893     OpVectorInsertDynamic = 78,
894     OpVectorShuffle = 79,
895     OpCompositeConstruct = 80,
896     OpCompositeExtract = 81,
897     OpCompositeInsert = 82,
898     OpCopyObject = 83,
899     OpTranspose = 84,
900     OpSampledImage = 86,
901     OpImageSampleImplicitLod = 87,
902     OpImageSampleExplicitLod = 88,
903     OpImageSampleDrefImplicitLod = 89,
904     OpImageSampleDrefExplicitLod = 90,
905     OpImageSampleProjImplicitLod = 91,
906     OpImageSampleProjExplicitLod = 92,
907     OpImageSampleProjDrefImplicitLod = 93,
908     OpImageSampleProjDrefExplicitLod = 94,
909     OpImageFetch = 95,
910     OpImageGather = 96,
911     OpImageDrefGather = 97,
912     OpImageRead = 98,
913     OpImageWrite = 99,
914     OpImage = 100,
915     OpImageQueryFormat = 101,
916     OpImageQueryOrder = 102,
917     OpImageQuerySizeLod = 103,
918     OpImageQuerySize = 104,
919     OpImageQueryLod = 105,
920     OpImageQueryLevels = 106,
921     OpImageQuerySamples = 107,
922     OpConvertFToU = 109,
923     OpConvertFToS = 110,
924     OpConvertSToF = 111,
925     OpConvertUToF = 112,
926     OpUConvert = 113,
927     OpSConvert = 114,
928     OpFConvert = 115,
929     OpQuantizeToF16 = 116,
930     OpConvertPtrToU = 117,
931     OpSatConvertSToU = 118,
932     OpSatConvertUToS = 119,
933     OpConvertUToPtr = 120,
934     OpPtrCastToGeneric = 121,
935     OpGenericCastToPtr = 122,
936     OpGenericCastToPtrExplicit = 123,
937     OpBitcast = 124,
938     OpSNegate = 126,
939     OpFNegate = 127,
940     OpIAdd = 128,
941     OpFAdd = 129,
942     OpISub = 130,
943     OpFSub = 131,
944     OpIMul = 132,
945     OpFMul = 133,
946     OpUDiv = 134,
947     OpSDiv = 135,
948     OpFDiv = 136,
949     OpUMod = 137,
950     OpSRem = 138,
951     OpSMod = 139,
952     OpFRem = 140,
953     OpFMod = 141,
954     OpVectorTimesScalar = 142,
955     OpMatrixTimesScalar = 143,
956     OpVectorTimesMatrix = 144,
957     OpMatrixTimesVector = 145,
958     OpMatrixTimesMatrix = 146,
959     OpOuterProduct = 147,
960     OpDot = 148,
961     OpIAddCarry = 149,
962     OpISubBorrow = 150,
963     OpUMulExtended = 151,
964     OpSMulExtended = 152,
965     OpAny = 154,
966     OpAll = 155,
967     OpIsNan = 156,
968     OpIsInf = 157,
969     OpIsFinite = 158,
970     OpIsNormal = 159,
971     OpSignBitSet = 160,
972     OpLessOrGreater = 161,
973     OpOrdered = 162,
974     OpUnordered = 163,
975     OpLogicalEqual = 164,
976     OpLogicalNotEqual = 165,
977     OpLogicalOr = 166,
978     OpLogicalAnd = 167,
979     OpLogicalNot = 168,
980     OpSelect = 169,
981     OpIEqual = 170,
982     OpINotEqual = 171,
983     OpUGreaterThan = 172,
984     OpSGreaterThan = 173,
985     OpUGreaterThanEqual = 174,
986     OpSGreaterThanEqual = 175,
987     OpULessThan = 176,
988     OpSLessThan = 177,
989     OpULessThanEqual = 178,
990     OpSLessThanEqual = 179,
991     OpFOrdEqual = 180,
992     OpFUnordEqual = 181,
993     OpFOrdNotEqual = 182,
994     OpFUnordNotEqual = 183,
995     OpFOrdLessThan = 184,
996     OpFUnordLessThan = 185,
997     OpFOrdGreaterThan = 186,
998     OpFUnordGreaterThan = 187,
999     OpFOrdLessThanEqual = 188,
1000     OpFUnordLessThanEqual = 189,
1001     OpFOrdGreaterThanEqual = 190,
1002     OpFUnordGreaterThanEqual = 191,
1003     OpShiftRightLogical = 194,
1004     OpShiftRightArithmetic = 195,
1005     OpShiftLeftLogical = 196,
1006     OpBitwiseOr = 197,
1007     OpBitwiseXor = 198,
1008     OpBitwiseAnd = 199,
1009     OpNot = 200,
1010     OpBitFieldInsert = 201,
1011     OpBitFieldSExtract = 202,
1012     OpBitFieldUExtract = 203,
1013     OpBitReverse = 204,
1014     OpBitCount = 205,
1015     OpDPdx = 207,
1016     OpDPdy = 208,
1017     OpFwidth = 209,
1018     OpDPdxFine = 210,
1019     OpDPdyFine = 211,
1020     OpFwidthFine = 212,
1021     OpDPdxCoarse = 213,
1022     OpDPdyCoarse = 214,
1023     OpFwidthCoarse = 215,
1024     OpEmitVertex = 218,
1025     OpEndPrimitive = 219,
1026     OpEmitStreamVertex = 220,
1027     OpEndStreamPrimitive = 221,
1028     OpControlBarrier = 224,
1029     OpMemoryBarrier = 225,
1030     OpAtomicLoad = 227,
1031     OpAtomicStore = 228,
1032     OpAtomicExchange = 229,
1033     OpAtomicCompareExchange = 230,
1034     OpAtomicCompareExchangeWeak = 231,
1035     OpAtomicIIncrement = 232,
1036     OpAtomicIDecrement = 233,
1037     OpAtomicIAdd = 234,
1038     OpAtomicISub = 235,
1039     OpAtomicSMin = 236,
1040     OpAtomicUMin = 237,
1041     OpAtomicSMax = 238,
1042     OpAtomicUMax = 239,
1043     OpAtomicAnd = 240,
1044     OpAtomicOr = 241,
1045     OpAtomicXor = 242,
1046     OpPhi = 245,
1047     OpLoopMerge = 246,
1048     OpSelectionMerge = 247,
1049     OpLabel = 248,
1050     OpBranch = 249,
1051     OpBranchConditional = 250,
1052     OpSwitch = 251,
1053     OpKill = 252,
1054     OpReturn = 253,
1055     OpReturnValue = 254,
1056     OpUnreachable = 255,
1057     OpLifetimeStart = 256,
1058     OpLifetimeStop = 257,
1059     OpGroupAsyncCopy = 259,
1060     OpGroupWaitEvents = 260,
1061     OpGroupAll = 261,
1062     OpGroupAny = 262,
1063     OpGroupBroadcast = 263,
1064     OpGroupIAdd = 264,
1065     OpGroupFAdd = 265,
1066     OpGroupFMin = 266,
1067     OpGroupUMin = 267,
1068     OpGroupSMin = 268,
1069     OpGroupFMax = 269,
1070     OpGroupUMax = 270,
1071     OpGroupSMax = 271,
1072     OpReadPipe = 274,
1073     OpWritePipe = 275,
1074     OpReservedReadPipe = 276,
1075     OpReservedWritePipe = 277,
1076     OpReserveReadPipePackets = 278,
1077     OpReserveWritePipePackets = 279,
1078     OpCommitReadPipe = 280,
1079     OpCommitWritePipe = 281,
1080     OpIsValidReserveId = 282,
1081     OpGetNumPipePackets = 283,
1082     OpGetMaxPipePackets = 284,
1083     OpGroupReserveReadPipePackets = 285,
1084     OpGroupReserveWritePipePackets = 286,
1085     OpGroupCommitReadPipe = 287,
1086     OpGroupCommitWritePipe = 288,
1087     OpEnqueueMarker = 291,
1088     OpEnqueueKernel = 292,
1089     OpGetKernelNDrangeSubGroupCount = 293,
1090     OpGetKernelNDrangeMaxSubGroupSize = 294,
1091     OpGetKernelWorkGroupSize = 295,
1092     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
1093     OpRetainEvent = 297,
1094     OpReleaseEvent = 298,
1095     OpCreateUserEvent = 299,
1096     OpIsValidEvent = 300,
1097     OpSetUserEventStatus = 301,
1098     OpCaptureEventProfilingInfo = 302,
1099     OpGetDefaultQueue = 303,
1100     OpBuildNDRange = 304,
1101     OpImageSparseSampleImplicitLod = 305,
1102     OpImageSparseSampleExplicitLod = 306,
1103     OpImageSparseSampleDrefImplicitLod = 307,
1104     OpImageSparseSampleDrefExplicitLod = 308,
1105     OpImageSparseSampleProjImplicitLod = 309,
1106     OpImageSparseSampleProjExplicitLod = 310,
1107     OpImageSparseSampleProjDrefImplicitLod = 311,
1108     OpImageSparseSampleProjDrefExplicitLod = 312,
1109     OpImageSparseFetch = 313,
1110     OpImageSparseGather = 314,
1111     OpImageSparseDrefGather = 315,
1112     OpImageSparseTexelsResident = 316,
1113     OpNoLine = 317,
1114     OpAtomicFlagTestAndSet = 318,
1115     OpAtomicFlagClear = 319,
1116     OpImageSparseRead = 320,
1117     OpSizeOf = 321,
1118     OpTypePipeStorage = 322,
1119     OpConstantPipeStorage = 323,
1120     OpCreatePipeFromPipeStorage = 324,
1121     OpGetKernelLocalSizeForSubgroupCount = 325,
1122     OpGetKernelMaxNumSubgroups = 326,
1123     OpTypeNamedBarrier = 327,
1124     OpNamedBarrierInitialize = 328,
1125     OpMemoryNamedBarrier = 329,
1126     OpModuleProcessed = 330,
1127     OpExecutionModeId = 331,
1128     OpDecorateId = 332,
1129     OpGroupNonUniformElect = 333,
1130     OpGroupNonUniformAll = 334,
1131     OpGroupNonUniformAny = 335,
1132     OpGroupNonUniformAllEqual = 336,
1133     OpGroupNonUniformBroadcast = 337,
1134     OpGroupNonUniformBroadcastFirst = 338,
1135     OpGroupNonUniformBallot = 339,
1136     OpGroupNonUniformInverseBallot = 340,
1137     OpGroupNonUniformBallotBitExtract = 341,
1138     OpGroupNonUniformBallotBitCount = 342,
1139     OpGroupNonUniformBallotFindLSB = 343,
1140     OpGroupNonUniformBallotFindMSB = 344,
1141     OpGroupNonUniformShuffle = 345,
1142     OpGroupNonUniformShuffleXor = 346,
1143     OpGroupNonUniformShuffleUp = 347,
1144     OpGroupNonUniformShuffleDown = 348,
1145     OpGroupNonUniformIAdd = 349,
1146     OpGroupNonUniformFAdd = 350,
1147     OpGroupNonUniformIMul = 351,
1148     OpGroupNonUniformFMul = 352,
1149     OpGroupNonUniformSMin = 353,
1150     OpGroupNonUniformUMin = 354,
1151     OpGroupNonUniformFMin = 355,
1152     OpGroupNonUniformSMax = 356,
1153     OpGroupNonUniformUMax = 357,
1154     OpGroupNonUniformFMax = 358,
1155     OpGroupNonUniformBitwiseAnd = 359,
1156     OpGroupNonUniformBitwiseOr = 360,
1157     OpGroupNonUniformBitwiseXor = 361,
1158     OpGroupNonUniformLogicalAnd = 362,
1159     OpGroupNonUniformLogicalOr = 363,
1160     OpGroupNonUniformLogicalXor = 364,
1161     OpGroupNonUniformQuadBroadcast = 365,
1162     OpGroupNonUniformQuadSwap = 366,
1163     OpSubgroupBallotKHR = 4421,
1164     OpSubgroupFirstInvocationKHR = 4422,
1165     OpSubgroupAllKHR = 4428,
1166     OpSubgroupAnyKHR = 4429,
1167     OpSubgroupAllEqualKHR = 4430,
1168     OpSubgroupReadInvocationKHR = 4432,
1169     OpGroupIAddNonUniformAMD = 5000,
1170     OpGroupFAddNonUniformAMD = 5001,
1171     OpGroupFMinNonUniformAMD = 5002,
1172     OpGroupUMinNonUniformAMD = 5003,
1173     OpGroupSMinNonUniformAMD = 5004,
1174     OpGroupFMaxNonUniformAMD = 5005,
1175     OpGroupUMaxNonUniformAMD = 5006,
1176     OpGroupSMaxNonUniformAMD = 5007,
1177     OpFragmentMaskFetchAMD = 5011,
1178     OpFragmentFetchAMD = 5012,
1179     OpImageSampleFootprintNV = 5283,
1180     OpGroupNonUniformPartitionNV = 5296,
1181     OpWritePackedPrimitiveIndices4x8NV = 5299,
1182     OpReportIntersectionNV = 5334,
1183     OpIgnoreIntersectionNV = 5335,
1184     OpTerminateRayNV = 5336,
1185     OpTraceNV = 5337,
1186     OpTypeAccelerationStructureNV = 5341,
1187     OpExecuteCallableNV = 5344,
1188     OpSubgroupShuffleINTEL = 5571,
1189     OpSubgroupShuffleDownINTEL = 5572,
1190     OpSubgroupShuffleUpINTEL = 5573,
1191     OpSubgroupShuffleXorINTEL = 5574,
1192     OpSubgroupBlockReadINTEL = 5575,
1193     OpSubgroupBlockWriteINTEL = 5576,
1194     OpSubgroupImageBlockReadINTEL = 5577,
1195     OpSubgroupImageBlockWriteINTEL = 5578,
1196     OpDecorateStringGOOGLE = 5632,
1197     OpMemberDecorateStringGOOGLE = 5633,
1198 }
1199 
1200